#include<iostream>

using namespace std;
const int N=35;
int numset[N][N];
bool flagbit[N][N];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int n;

void dfs(int x,int y)
{
	flagbit[x][y]=true;
	for(int i=0;i<4;i++)
	{
		int newx=x+dx[i];
		int newy=y+dy[i];
		if(newx<=n&&newy<=n&&newy>=1&&newx>=1
			&&numset[newx][newy]==0&&
			!flagbit[newx][newy])
		{
			dfs(newx,newy);
		}
	}
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>numset[i][j];
		}
	}

	for(int i=1;i<=n;i++)
	{
		if(numset[1][i]==0&&!flagbit[1][i])
			dfs(1,i);
		if(numset[n][i]==0&&!flagbit[n][i])
			dfs(n,i);
		if(numset[i][1]==0&&!flagbit[i][1])
			dfs(i,1);
		if(numset[i][n]==0&&!flagbit[i][n])
			dfs(i,n);
	}

	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(numset[i][j]==0 &&!flagbit[i][j])
			{
				cout<<2<<" ";
			}
			else 
			{
				cout<<numset[i][j]<<" ";
			}
		}
		cout<<endl;
	}
}